LIST    P=18F452

 include "P18F452.INC"

	__CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H
	__CONFIG _CONFIG2L, _BOR_OFF_2L & _PWRT_ON_2L
	__CONFIG _CONFIG2H, _WDT_OFF_2H
	__CONFIG _CONFIG3H, _CCP2MX_OFF_3H
	__CONFIG _CONFIG4L, _STVR_OFF_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
	__CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L 
	__CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
	__CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L 
	__CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
	__CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
	__CONFIG _CONFIG7H, _EBTRB_OFF_7H
	
	
	
		ORG 		0x000			
		GOTO		0x10

		ORG			0x10
							;    
BR1		EQU			0x72		;     					


	
	 	CLRF		PORTA			;   PORTA
		CLRF		PORTB			;   PORT
		MOVLW		0X32			;
		MOVWF		TMR0L			
		MOVLW		b'11000111'		;     TMR0		
		MOVWF		T0CON			; .   1:256
		CLRF		PIE1			
									
		CLRF		TRISA			;  
							;PORTA   RS, R/W, E
		CLRF		TRISB			;  
							;PORTB   DB0...DB7
		
		CLRF		INTCON			
							

E1		BTFSS		INTCON,T0IF		; bit T0IF t > 30mS
		GOTO		E1 		
;-------------------------------------------------------------	
;SEND: Function set, 2 line, display on	
		BCF		PORTA,0			; RS =0		
		BCF		PORTA,1			; R/W=0		
		MOVLW		0x3C						
		MOVWF		PORTB									
		CALL		DELWR				
		CALL		E2			; 
							;  t>40uS
;--------------------------------------------------------------				
;SEND: display on/of control, blik, cursor	
		BCF		PORTA,0			; RS =0	
		BCF		PORTA,1			;R/W=0
		MOVLW		0xF			
		MOVWF		PORTB
		CALL		DELWR						
		CALL		E2			; 
							;  t>40uS
;--------------------------------------------------------------
;SEND: Display clear 
		BCF		PORTA,0			;RS=0
		BCF		PORTA,1			;R/W=0	
		MOVLW		0x1
		MOVWF		PORTB
		CALL		DELWR
		CALL		E2

		MOVLW		0x21		
		MOVWF		BR1
E4		CALL		E2			;  t>40us
		DECFSZ		BR1,1
		GOTO		E4
		
;-------------------------------------------------------------
;SEND: Entry mode set
		BCF		PORTA,0			;RS=0
		BCF		PORTA,1			;R/W=0
		MOVLW		0x6
		MOVWF		PORTB
		CALL		DELWR
		CALL		E2			;  t>40us
;-------------------------------------------------------------
;     1 , 2 	
V		BCF		PORTA,0			;RS=0
		BCF		PORTA,1			;R/W=0
		MOVLW		0x81			 
		MOVWF		PORTB
		CALL		DELWR
;    'V' -    :-( !!!!
		BSF		PORTA,0			;RS=1		
		BCF		PORTA,1			;R/W=0
		MOVLW		0x56
		MOVWF		PORTB
		CALL		DELWR
;;    'f' -    :-( !!!!
		BSF		PORTA,0			;RS=1
		BCF		PORTA,1			;R/W=0
		MOVLW		0x66
		MOVWF		PORTB	
		CALL		DELWR
;     1 , 6 	
		BCF		PORTA,0			;RS=0
		BCF		PORTA,2			;R/W=0
		MOVLW		0x85
		MOVWF		PORTB
		CALL		DELWR
	
		GOTO		V
;--------------   ------------
; t>40us

E2		MOVLW		0xF			; 	
		MOVWF		TMR0L
		MOVLW		b'11000000'		;     TMR0		
		MOVWF		T0CON			; .   1:1 
		CLRF		INTCON			;  
							;   TMR0	
E3		BTFSS		INTCON,T0IF		; bit T0IF  - t>40 us
		GOTO		E3
		RETURN
;------------------------------------------
		

;    ENABLE     

DELWR		BSF	PORTA,2				;  nable (E)	
		CALL	E2
		BCF	PORTA,2			;  nable (E)	
		CALL	E2			;  
						;  t>40us
		RETURN	
		END